#ifndef QQMUSIC_H
#define QQMUSIC_H

#include "volumetool.h"
#include "musiclist.h"
#include "CommonPage.h"
#include "lrcpage.h"
#include <QWidget>
#include <QPoint>
#include <QMouseEvent>
#include <QGraphicsDropShadowEffect>
#include <QMediaPlayer>
#include <QMediaPlaylist>
#include <QPropertyAnimation>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QMessageBox>

QT_BEGIN_NAMESPACE
namespace Ui {
class QQMusic;
}
QT_END_NAMESPACE

class QQMusic : public QWidget
{
    Q_OBJECT

public:
    QQMusic(QWidget *parent = nullptr);
    ~QQMusic();

    //ui界面初始化
    void initUi();
    //初始化媒体播放
    void initPlayer();
    //构建推荐页面 图片路径 和 对应文本
    QVector<QPair<QString,QString>> randmoPiction();
    //初始化数据库
    void initSqlite();
    //初始化歌曲列表
    void initMusicList();

protected:
    //鼠标点击事件 (虚函数重写)
    void mousePressEvent(QMouseEvent *event) override;
    //鼠标拖拽事件 (虚函数重写)
    void mouseMoveEvent(QMouseEvent *event)override;
    //重写绘制事件 , 设置窗口圆角效果
    void paintEvent(QPaintEvent *event) override;

private:
    void connectSignalAndSlot();

//槽函数设置
private slots:
    //退出按钮
    void on_quit_clicked();
    //最小化按钮
    void on_min_clicked();
    //播放按键
    void on_play_clicked();
    //BtForm点击处理
    void onBtFormClick(const int);
    //音量调节按钮点击处理
    void on_volumn_clicked();
    //添加音乐按钮
    void on_addLocal_clicked();
    //commonPage音乐收藏状态改变槽函数
    void updateLikeMusicAndPage();
    //播放模式按钮
    void on_playMod_clicked();
    //上一曲
    void on_playUp_clicked();
    //下一曲
    void on_playDown_clicked();
    //音量调节
    void setPlayerVolume(int);
    //歌词按钮
    void on_lrcBtn_clicked();
    //换肤按钮
    void on_skin_clicked();

private:
    Ui::QQMusic *ui;
    QPoint dragPos; //鼠标 与 窗口相对位置
    VolumeTool *volumeTool;//音量调节窗口
    MusicList musicList; //音乐列表
    QMediaPlayer player;//媒体播放类
    QMediaPlaylist playList;//播放列表
    CommonPage* currentPage;//当前正在播放的页面
    Music* currentMusic;//当前正在播放的音乐
    LrcPage *lrcPage; //歌词界面
    QPropertyAnimation* lrcPageAnimal;//歌词页面动画类
    QSqlDatabase sqlite;
};
#endif // QQMUSIC_H
